package vo

import (
	"boy-go/pkg/request"
	"boy-go/pkg/xtime"
	"time"
)

type LoginUserInfo struct {
	User        SysUserModel `json:"user" form:"user"`               // 用户信息
	Roles       []string     `json:"roles" form:"roles"`             // 角色权限
	Permissions []string     `json:"permissions" form:"permissions"` // 权限标识
}
type SysUserModel struct {
	UserId        int64           `json:"userId" form:"userId"`                        // 用户ID
	DeptId        *int64          `json:"deptId" form:"deptId"`                        // 部门ID
	UserName      *string         `json:"userName" form:"userName" excel:"用户账号"`       // 用户账号
	NickName      *string         `json:"nickName" form:"nickName" excel:"用户账号"`       // 用户昵称
	UserType      *string         `json:"userType" form:"userType"`                    // 用户类型（00系统用户）
	Email         *string         `json:"email" form:"email" excel:"用户邮箱"`             // 用户邮箱
	PhoneNumber   *string         `json:"phonenumber" form:"phonenumber" excel:"手机号码"` // 手机号码
	Sex           *string         `json:"sex" form:"sex"`                              // 用户性别（0男 1女 2未知）
	Avatar        *string         `json:"avatar" form:"avatar"`                        // 头像地址
	Status        *string         `json:"status" form:"status"`                        // 账号状态（0正常 1停用）
	DelFlag       *string         `json:"delFlag" form:"delFlag"`                      // 删除标志（0代表存在 2代表删除）
	LoginIp       *string         `json:"loginIp" form:"loginIp"`                      // 最后登录IP
	LoginDate     *string         `json:"loginDate" form:"loginDate"`                  // 最后登录时间
	PwdUpdateDate *string         `json:"pwdUpdateDate" form:"pwdUpdateDate"`          // 密码最后更新时间
	CreateBy      *string         `json:"createBy" form:"createBy"`                    // 创建者
	CreateTime    *string         `json:"createTime" form:"createTime"`                // 创建时间
	UpdateBy      *string         `json:"updateBy" form:"updateBy"`                    // 更新者
	UpdateTime    *string         `json:"updateTime" form:"updateTime"`                // 更新时间
	Remark        *string         `json:"remark" form:"remark"`                        // 备注
	Dept          *SysDeptModel   `json:"dept" form:"dept"`                            // 部门对象
	Roles         []*SysRoleModel `json:"roles" form:"roles"`                          // 角色集合
	RoleIds       []*int64        `json:"roleIds" form:"roleIds"`                      // 角色组
	PostIds       []*int64        `json:"postIds" form:"postIds"`                      // 岗位组
}

func (item *SysUserModel) CreateAt(t *time.Time) {
	item.CreateTime = xtime.TS.Format(t)
}
func (item *SysUserModel) UpdateAt(t *time.Time) {
	item.UpdateTime = xtime.TS.Format(t)
}

type SysUserExcelModel struct {
	UserId      int64  `name:"用户序号"`                                 // 用户ID
	UserName    string `name:"用户账号"`                                 // 用户账号
	NickName    string `name:"用户账号"`                                 // 用户昵称
	Email       string `name:"用户邮箱"`                                 // 用户邮箱
	PhoneNumber string `name:"手机号码"`                                 // 手机号码
	Sex         string `name:"用户性别" readConverterExp:"0=男,1=女,2=未知"` // 用户性别（0男 1女 2未知）
	Status      string `name:"账号状态" readConverterExp:"0=正常,1=停用"`    // 账号状态（0正常 1停用）
	LoginIp     string `name:"最后登录IP"`                               // 最后登录IP
	LoginDate   string `name:"最后登录时间"`                               // 最后登录时间
	CreateTime  string `name:"创建时间"`                                 // 创建时间
	UpdateTime  string `name:"更新时间"`                                 // 更新时间
}
type QuerySysUserReq struct {
	request.ParamsRequest
	UserId      *int64  `json:"userId" form:"userId"`           // 用户ID
	UserName    *string `json:"userName" form:"userName"`       // 用户账号
	NickName    *string `json:"nickName" form:"nickName"`       // 用户昵称
	UserType    *string `json:"userType" form:"userType"`       // 用户类型（00系统用户）
	Email       *string `json:"email" form:"email"`             // 用户邮箱
	PhoneNumber *string `json:"phonenumber" form:"phonenumber"` // 手机号码
	Sex         *string `json:"sex" form:"sex"`                 // 用户性别（0男 1女 2未知）
	Status      *string `json:"status" form:"status"`           // 账号状态（0正常 1停用）
	DeptId      *int64  `json:"deptId" form:"deptId"`           // 部门ID
	RoleId      *int64  `json:"roleId" form:"roleId"`           // 角色ID
}
type ListSysUserRsp struct {
	List  []*SysUserModel
	Total int64
}

type AddSysUserReq struct {
	UserId        int64    `json:"userId" form:"userId"`               // 用户ID
	DeptId        *int64   `json:"deptId" form:"deptId"`               // 部门ID
	UserName      *string  `json:"userName" form:"userName"`           // 用户账号
	NickName      *string  `json:"nickName" form:"nickName"`           // 用户昵称
	UserType      *string  `json:"userType" form:"userType"`           // 用户类型（00系统用户）
	Email         *string  `json:"email" form:"email"`                 // 用户邮箱
	PhoneNumber   *string  `json:"phonenumber" form:"phonenumber"`     // 手机号码
	Sex           *string  `json:"sex" form:"sex"`                     // 用户性别（0男 1女 2未知）
	Avatar        *string  `json:"avatar" form:"avatar"`               // 头像地址
	Password      *string  `json:"password" form:"password"`           // 密码
	Status        *string  `json:"status" form:"status"`               // 账号状态（0正常 1停用）
	DelFlag       *string  `json:"delFlag" form:"delFlag"`             // 删除标志（0代表存在 2代表删除）
	LoginIp       *string  `json:"loginIp" form:"loginIp"`             // 最后登录IP
	LoginDate     *string  `json:"loginDate" form:"loginDate"`         // 最后登录时间
	PwdUpdateDate *string  `json:"pwdUpdateDate" form:"pwdUpdateDate"` // 密码最后更新时间
	CreateBy      *string  `json:"createBy" form:"createBy"`           // 创建者
	CreateTime    *string  `json:"createTime" form:"createTime"`       // 创建时间
	UpdateBy      *string  `json:"updateBy" form:"updateBy"`           // 更新者
	UpdateTime    *string  `json:"updateTime" form:"updateTime"`       // 更新时间
	Remark        *string  `json:"remark" form:"remark"`               // 备注
	RoleIds       []*int64 `json:"roleIds" form:"roleIds"`             // 角色组
	PostIds       []*int64 `json:"postIds" form:"postIds"`             // 岗位组
}
type AddSysUserRsp struct {
	UserId int64 `json:"userId" form:"userId"` // 用户ID
}

type EditSysUserReq struct {
	UserId        int64    `json:"userId" form:"userId"`               // 用户ID
	DeptId        *int64   `json:"deptId" form:"deptId"`               // 部门ID
	UserName      *string  `json:"userName" form:"userName"`           // 用户账号
	NickName      *string  `json:"nickName" form:"nickName"`           // 用户昵称
	UserType      *string  `json:"userType" form:"userType"`           // 用户类型（00系统用户）
	Email         *string  `json:"email" form:"email"`                 // 用户邮箱
	PhoneNumber   *string  `json:"phonenumber" form:"phonenumber"`     // 手机号码
	Sex           *string  `json:"sex" form:"sex"`                     // 用户性别（0男 1女 2未知）
	Avatar        *string  `json:"avatar" form:"avatar"`               // 头像地址
	Password      *string  `json:"password" form:"password"`           // 密码
	Status        *string  `json:"status" form:"status"`               // 账号状态（0正常 1停用）
	DelFlag       *string  `json:"delFlag" form:"delFlag"`             // 删除标志（0代表存在 2代表删除）
	LoginIp       *string  `json:"loginIp" form:"loginIp"`             // 最后登录IP
	LoginDate     *string  `json:"loginDate" form:"loginDate"`         // 最后登录时间
	PwdUpdateDate *string  `json:"pwdUpdateDate" form:"pwdUpdateDate"` // 密码最后更新时间
	CreateBy      *string  `json:"createBy" form:"createBy"`           // 创建者
	CreateTime    *string  `json:"createTime" form:"createTime"`       // 创建时间
	UpdateBy      *string  `json:"updateBy" form:"updateBy"`           // 更新者
	UpdateTime    *string  `json:"updateTime" form:"updateTime"`       // 更新时间
	Remark        *string  `json:"remark" form:"remark"`               // 备注
	RoleIds       []*int64 `json:"roleIds" form:"roleIds"`             // 角色组
	PostIds       []*int64 `json:"postIds" form:"postIds"`             // 岗位组
}
type EditSysUserRsp struct {
	UserId int64 `json:"userId" form:"userId"` // 用户ID
}
type ResetPwdSysUserReq struct {
	UserId   int64   `json:"userId" form:"userId"`     // 用户ID
	Password *string `json:"password" form:"password"` // 密码
}
type ChangeSysUserReq struct {
	UserId int64  `json:"userId" form:"userId"` // 用户ID
	Status string `json:"status" form:"status"` // 状态
}
type AddAuthRoleReq struct {
	UserId  int64    `json:"userId" form:"userId"`   // 用户ID
	RoleIds []*int64 `json:"roleIds" form:"roleIds"` // 角色
}
